/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package evabot.mail;

//package alicebot.mail;
import org.apache.commons.mail.*;

/**
 * Classe responsÃ¡vel pelo envio de e-mail.
 *
 * @author Alexandre Sales, Danielle Chaves, Maria Isabel Farias
 */
public class SendMail {

	SimpleEmail mail;
	private String mailSMTPServer;
	private String mailSMTPPort;

	private String from;
	private String remittingName;
	private String to;
	private String receiverName;
	private String subject;
	private String text;

	/**
	 * ConstrÃ³i um novo e-mail.
	 *
	 * @param from
	 * 			E-mail do remetente.
	 * @param remittingName
	 * 			Nome do remetente.
	 * @param to
	 * 			E-mail do destinatÃ¡rio.
	 * @param receiverName
	 * 			E-mail do destinatÃ¡rio.
	 * @param subject
	 * 			Assunto do e-mail.
	 * @param text
	 * 			ConteÃºdo do e-mail.
	 * @param mailSMTPServer
	 * 			Servidor desejado.
	 * @param mailSMTPPort
	 * 			Porta utilizada.
	 */
	public SendMail(String from, String remittingName, String to, String receiverName,
			String subject, String text, String mailSMTPServer, String mailSMTPPort) {

		this.from = from;
		this.remittingName = remittingName;
		this.to = to;
		this.receiverName = receiverName;
		this.subject = subject;
		this.text = text;

		// lembrando que:
		// Servidor e Porta do GMail: "smtp.gmail.com", "465"
		this.mail = new SimpleEmail();
		this.mailSMTPPort = mailSMTPPort;
		this.mailSMTPServer = mailSMTPServer;

		// seta as informaÃ§Ãµes fornecidas: servidor e porta.
		setSMTPInfo();
	}

	/**
	 * Seta as informaÃ§Ãµes fornecidas: servidor e porta.
	 */
	private void setSMTPInfo() {
		mail.setHostName(mailSMTPServer);
		mail.setSslSmtpPort(mailSMTPPort);
	}

	/**
	 *  conexÃ£o, por default do CommonMail, nÃ£o Ã© SSL. Como alguns servidores
	 *  sÃ£o, serÃ¡ necessÃ¡rio setar como verdadeiro
	 */
	public void isSLL() {
		mail.setSSL(true);
	}

	/**
	 * ResponsÃ¡vel pelo envio do e-mail, com adiÃ§Ã£o do nome do remetente
	 * e do destinatÃ¡rio.
	 */
	public void sendMail() {
		try {
			// definiÃ§Ã£o de remetente e destinatÃ¡rio (e seus respectivos nomes),
			// bem como do assunto e do conteÃºdo do e-mail.
			mail.setFrom(from, remittingName);
			mail.addTo(to, receiverName);
			mail.setSubject(subject);
			mail.setMsg(text);
			// envio do e-mail.
			mail.send();
		} catch (EmailException e) {
			e.printStackTrace();
		}
	}

	/**
	 * ResponsÃ¡vel pela adiÃ§Ã£o de e-mail para envio de cÃ³pias.
	 *
	 * @param ccMail
	 * 			E-mail do novo destinatÃ¡rio.
	 * @param ccName
	 * 			Nome do novo destinatÃ¡rio.
	 */
	public void addCc(String ccMail, String ccName) {
		try {
			mail.addCc(ccMail, ccName);
		} catch (EmailException e) {
			e.printStackTrace();
		}
	}

	/**
	 * ResponsÃ¡vel pela autenticaÃ§Ã£o do usuÃ¡rio remetente.
	 *
	 * @param userName
	 * 			Nome do usuÃ¡rio.
	 * @param password
	 * 			Senha do usuÃ¡rio.
	 */
	public void setAuthentication(String userName, String password) {
		mail.setAuthentication(userName, password);
	}

}
